const t = require('@babel/types');
const parser = require('@babel/parser');
const traverse = require('@babel/traverse').default;
const generator = require('@babel/generator').default;

// 解析源代码为 AST
const code = `function example() {}`;
const ast = parser.parse(code);

// 遍历 AST 并插入新的变量声明
traverse(ast, {
  enter(path) {
    if (t.isFunctionDeclaration(path.node)) {
      // 创建一个新的变量声明
      const newVarDecl = t.variableDeclaration('const', [
        t.variableDeclarator(
          t.identifier('newVar'),
          t.stringLiteral('Hello, world!')
        )
      ]);

      // 在函数声明之前插入新的变量声明
      path.insertBefore(newVarDecl);
    }
  }
});

// 将修改后的 AST 转换回代码字符串
const output = generator(ast).code;
console.log(output);